home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 20 / Cream of the Crop 20 (Terry Blount) (1996).iso / program / nxdv99_3.zip / NEXUS.INC < prev    next >
Text File  |  1996-06-26  |  98KB  |  1,489 lines

  1. {────────────────────────────────────────────────────────────────────────────}
  2. { ▒▒▒▒▄ ▒▒▒▒▄   ▒▒▒▒▄     Intuitive Vision Software                          }
  3. { ▒▒▒▒█ ▒▒▒▒█  ▒▒▒▒█      P.O. Box 257773                                    }
  4. {  ▀▀▀▀ ▒▒▒▒█ ▒▒▒▒█       Chicago, IL 60625-7773                             }
  5. { ▒▒▒▒▄ ▒▒▒▒█▒▒▒▒█        (312) 583-2480                                     }
  6. { ▒▒▒▒█ ▒▒▒▒▒▒▒▒█                                                            }
  7. { ▒▒▒▒█ ▒▒▒▒▒▒▒█                                                             }
  8. { ▒▒▒▒█ ▒▒▒▒▒█▀           "Today's Leader in Sensible Software Solutions"    }
  9. {  ▀▀▀▀  ▀▀▀▀▀                                                               }
  10. { S O F T W A R E (tm)                                                       }
  11. {                                                                            }
  12. { Nexus (tm) - Next Epoch matriX User System (tm)                            }
  13. {                                                                            }
  14. { Data Structures (Turbo Pascal (tm) Format)                                 }   
  15. {                                                                            }
  16. { All Material Contained Herein Is Copyright 1996 Intuitive Vision Software. }
  17. { All Rights Reserved.                                                       }
  18. {                                                                            }
  19. { Nexus, Next Epoch matriX User System, and the IV Software Logo are         }
  20. { Trademarks of Intuitive Vision Software.  Turbo Pascal is a Trademark of   }
  21. { Borland International.                                                     }
  22. {                                                                            }
  23. {────────────────────────────────────────────────────────────────────────────}
  24.  
  25. { Pre-release Structures for Nexus 1.00 -------------------------------------}
  26. {                                                                            }
  27. { Note to developers: These are the pre-release structures.  All structures  }
  28. { have not been included in this version due to the fact that there will be  }
  29. { major changes on those files.  You will most notably note the absence of   }
  30. { the File Base (.NFB) structures.  These will be getting a very large       }
  31. { reworking before the final release, so we have chosen not to include the   }
  32. { current structures.                                                        }
  33. {                                                                            }
  34. { Intuitive Vision Software does not guarantee that these structures will    }
  35. { remain unchanged for the final (1.00) release.  We will do what we can to  }
  36. { keep to these structures, as we do not wish to cause anyone undue work.    }
  37. {                                                                            }
  38. { Thank you for considering developing for Nexus!                            }
  39. {                                                                            }
  40. {                                              Intuitive Vision Software     }
  41. {----------------------------------------------------------------------------}
  42. {----------------------------------------------------------------------------}
  43. { NOTES TO TURBO PASCAL DEVELOPERS:                                          }
  44. {                                                                            }
  45. {     Intuitive Vision Software provides for no reliability of these data    }
  46. { structures.  Intuitive Vision Software has provided these structures to    }
  47. { allow Turbo Pascal Developers to develop Nexus compatible applications.    }
  48. { These structures are provided AS IS.  Intuitive Vision Software provides   }
  49. { no warranty, expressed or implied, to those who use these structures.  At  }
  50. { no time, for any reason, may Intuitive Vision Software, its employees,     }
  51. { contractees, or other affiliates be held responsible for any loss due to   }
  52. { the use of these structures, whether direct or indirect.                   }
  53. {                                                                            }
  54. {                                                                            }
  55. {   IMPORTANT - IMPORTANT - IMPORTANT - IMPORTANT - IMPORTANT - IMPORTANT    }
  56. {                                                                            }
  57. {  DO NOT MODIFY any variables that are labeled as RESERVED.  These are      }
  58. {  reserved for future enhancements and modifying them may cause current or  }
  59. {  future versions of Nexus to run improperly or even crash.                 }
  60. {----------------------------------------------------------------------------}
  61.  
  62. {----------------------------------------------------------------------------}
  63. { Version Number Information:                                                }
  64. {                                                                            }
  65. { <Version>    String formatted typed CONSTANT representing the string       }
  66. {              display of the version number                                 }
  67. { <MajVersion> Major/Minor Version numbers - byte format. This is the current}
  68. { <MinVersion> version that these structures support.  This can be used to   }
  69. {              check the MATRIX.DAT for the version number that it is being  }
  70. {              used with, for compatibility sake.                            }
  71. {----------------------------------------------------------------------------}
  72.  
  73. CONST
  74.  
  75. Version         : STRING[4]='0.99';
  76. MajVersion      : BYTE=0;
  77. MinVersion      : BYTE=99;
  78.  
  79.  
  80. {----------------------------------------------------------------------------}
  81. { CONSTANT Declarations:                                                     }
  82. {                                                                            }
  83. { Various CONSTANTS that are used internally in Nexus.  They are included    }
  84. { here for reference.  They give you an idea of what type of limitations     }
  85. { that Nexus places on certain data files, so that you can impose the same   }
  86. { limitations in your programs.  Please follow these restrictions closely,   }
  87. { as if you add more than the maximum allowed, those above maximum will not  }
  88. { be used by Nexus.                                                          }
  89. {----------------------------------------------------------------------------}
  90.  
  91. CONST
  92.  
  93. MaxMsgBases     = 32767;          { 0 to 32767                               }
  94. MaxFileBases    = 32767;          { 0 to 32767                               }
  95. MaxMenuCommands = 50;             { 1 to 50                                  }
  96. MaxGlobalCmds   = 20;             { 1 to 20                                  }
  97.  
  98.  
  99. {----------------------------------------------------------------------------}
  100. { TYPE Declarations:                                                         }
  101. {                                                                            }
  102. { Various TYPES that are used throughout Nexus for internal workings and for }
  103. { data structures in data files.  If a structure is the specific foundation  }
  104. { of a file, the filename and information will be listed before the structure}
  105. { information, so as to help you with which structures go with which files.  }
  106. {----------------------------------------------------------------------------}
  107.  
  108. TYPE
  109.  
  110. ACString        = STRING[20];     { Access Control String                    }
  111. JoinedConfs     = 'A'..'Z';       { Conference Set                           }
  112.  
  113.  
  114. {----------------------------------------------------------------------------}
  115. { Filename: USERS.IDX                                                        }
  116. { Location: DATA Directory                                                   }
  117. { Format  : 1 <UserIDX> record per entry, 0 record is blank buffer           }
  118. {                                                                            }
  119. { Notes   : Used to have a quick index to to the USERS.DAT file.  Records    }
  120. {           must correspond with the appropriate record in the USERS.DAT     }
  121. {           file.  i.e. Record 1 of USERS.IDX should match Record 1 of       }
  122. {           USERS.DAT.  The <number> variable is a safeguard for a case      }
  123. {           where they do not match.                                         }
  124. {----------------------------------------------------------------------------}
  125.  
  126. UserIDX=
  127. RECORD
  128.     Alias    : STRING[36];        { Alias                                    }
  129.     RealName : STRING[36];        { Real Name                                }
  130.     Number   : INTEGER;           { Record Number in USERS.DAT               }
  131.     UserID   : LONGINT;           { UserID number matching the UserREC.UserID}
  132.     RESERVED : ARRAY[1..5] of
  133.                             BYTE; { RESERVED - DO NOT MODIFY                 }
  134. END;
  135.  
  136. {----------------------------------------------------------------------------}
  137. { Filename: USERID.IDX                                                       }
  138. { Location: DATA Directory                                                   }
  139. { Format  : 1 <UserIDREC> record per entry                                   }
  140. {                                                                            }
  141. { Notes   : Used to have a quick index to to the UserIDs.  There will be one }
  142. {           record for each UserID.  The <Number> variable will be set to -1 }
  143. {           if the user has been deleted.                                    }
  144. {----------------------------------------------------------------------------}
  145.  
  146. UserIDREC=
  147. RECORD
  148.     UserID      : LONGINT;      { UserID Number matching UserREC.UserID      }
  149.     Number      : INTEGER;      { Record number in USERS.DAT                 }
  150. END;
  151.  
  152.  
  153. {----------------------------------------------------------------------------}
  154. { Filename: USERS.DAT                                                        }
  155. { Location: DATA Directory                                                   }
  156. { Format  : 1 <userrec> record per entry, 0 record is blank buffer           }
  157. {                                                                            }
  158. { Notes   : Used to store user information.  One record per user. Record     }
  159. {           #0 is a blank record that is used to buffer the file out so      }
  160. {           that the user numbers start at 1.                                }
  161. {----------------------------------------------------------------------------}
  162.  
  163. {----------------------------------------------------------------------------}
  164. { Uflags Set:                                                                }
  165. {               Items have a starting designation character to tell you what }
  166. {               type of flag they are:                                       }
  167. {                                                                            }
  168. {               r  =  Restriction                                            }
  169. {               c  =  Control                                                }
  170. {               s  =  Special Priveledge                                     }
  171. {                                                                            }
  172. {----------------------------------------------------------------------------}
  173.  
  174. ARFlagSet       = '@'..'Z';       { AR flags                                 }
  175.  
  176. Uflags =
  177.    (rLogon,                       { Restrict: One Call Per Day               }
  178.     rChat,                        { Restrict: Cannot Page SysOp              }
  179.     RESERVED1,                    { RESERVED - DO NOT MODIFY                 }
  180.     RESERVED2,                    { RESERVED - DO NOT MODIFY                 }
  181.     RESERVED3,                    { RESERVED - DO NOT MODIFY                 }
  182.     RESERVED4,                    { RESERVED - DO NOT MODIFY                 }
  183.     rPost,                        { Restrict: Cannot Post Messages           }
  184.     rPrivate,                     { Restrict: Cannot Post Private Messages   }
  185.     RESERVED5,                    { RESERVED - DO NOT MODIFY                 }
  186.     rDelMsg,                      { Restrict: Force Private Message Deletion }
  187.     RESERVED6,                    { RESERVED - DO NOT MODIFY                 }
  188.     cQuickKey,                    { Control : QuickKey Input Mode            }
  189.     RESERVED7,                    { RESERVED - DO NOT MODIFY                 }
  190.     cPause,                       { Control : Pause When Screen Full         }
  191.     cNovice,                      { Control : Novice Help Level for Menus    }
  192.     cAnsi,                        { Control : ANSI when detected             }
  193.     cColor,                       { Control : Display Color                  }
  194.     cAlert,                       { Control : Alert SysOp When User Logs On  }
  195.     cUseTaglines,                 { Control : Use Taglines for Messages      }
  196.     cRip,                         { Control : RIP when detected              }
  197.     sNoULDLRatio,                 { Special : No UL/DL Ratio enforced        }
  198.     sNoPostRatio,                 { Special : No Post/Call Ratio enforced    }
  199.     sNoFilePts,                   { Special : No File Point Checking enforced}
  200.     sNoDeletion);                 { Special : May not be Deleted             }
  201.  
  202.  
  203. UserREC=
  204. RECORD
  205.     Alias        : STRING[36];    { User's Alias                             }
  206.     RealName     : STRING[36];    { User's Real Name                         }
  207.     UserID       : LONGINT;
  208.     RESERVED1    : ARRAY[1..33]
  209.                         of BYTE;  { RESERVED - DO NOT MODIFY                 }
  210.     AccessKey    : STRING[20];    { Access Key                               }
  211.     VoicePhone   : STRING[20];    { Voice Phone Number                       }
  212.     DataPhone    : STRING[20];    { Data Phone Number                        }
  213.     OptPhone1    : STRING[20];    { Optional Phone #1                        }
  214.     OptPhone2    : STRING[20];    { Optional Phone #2                        }
  215.     Street1      : STRING[30];    { Street Address Line #1                   }
  216.     Street2      : STRING[30];    { Street Address Line #2                   }
  217.     CityState    : STRING[40];    { City, State (Province)                   }
  218.     ZipCode      : STRING[20];    { Zipcode                                  }
  219.     Birthdate    : STRING[8];     { Birthdate                                }
  220.     Gender       : CHAR;          { Gender                                   }
  221.     Option1      : STRING[30];    { Optional Field #1                        }
  222.     Option2      : STRING[40];    { Optional Field #2                        }
  223.     Option3      : STRING[40];    { Optional Field #3                        }
  224.     SysopNote    : STRING[40];    { SysOp note                               }
  225.     CallingFrom  : STRING[40];    { Calling From String                      }
  226.     Title        : STRING[20];    { Title (FUTURE USE)                       }
  227.     Description  : ARRAY[1..4]
  228.                    of STRING[40]; { User Self Description (FUTURE USE)       }
  229.     ClearEntry   : ARRAY[1..20]   
  230.                    of BOOLEAN;    { Clear Entries Flags                      }
  231.  
  232.     FileScanDate : STRING[8];     { Last Date that a New File Scan was done  }
  233.     RESERVED2    : ARRAY[1..39]
  234.                      of BYTE;     { RESERVED - DO NOT MODIFY                 }
  235.     phEntryType  : BYTE;          { Phone Number Entry Type:                 }
  236.                                   { 1: US/Canada  2: International           }
  237.     zipEntryType : BYTE;          { Zipcode Entry Type:                      }
  238.                                   { 1: US         2: Canada/International    }
  239.     FirstOnDate  : STRING[8];     { First Called BBS Date (xx/xx/xx)         }
  240.     LastOnDate   : STRING[8];     { Last Called BBS Date  (xx/xx/xx)         }
  241.     LastFileScan : LONGINT;       { Last File Newscan Date/Time              }
  242.     SecurityLevel: BYTE;          { Security Level (1-100)                   }
  243.     UserFlags    : SET of Uflags; { User Flags                               }
  244.     UserARFlags  : SET of ARflagSet;{ User AR Flags                            }
  245.     LockedOut    : BOOLEAN;       { Is User Locked Out?                      } 
  246.     Deleted      : BOOLEAN;       { Is User Deleted?                         }
  247.     LockedFile   : STRING[8];     { Lockout File to Display to User          }
  248.  
  249.  
  250.     RESERVED3    : ARRAY[1..50]
  251.                      of BYTE;     { RESERVED - DO NOT MODIFY                 }
  252.     TotalTime    : LONGINT;       { Total Minutes spent on this BBS          }
  253.     TotalCalls   : INTEGER;       { Number of Calls to this BBS              }
  254.     TimeLeftToday: INTEGER;       { Number of Minutes Left Today             }
  255.     CallsToday   : BYTE;          { Number of Calls Today                    }
  256.     IllegalLogons: BYTE;          { Number of Illegal Logon Attempts         }
  257.     Credits      : LONGINT;       { Credits                                  }
  258.     TimeBank     : INTEGER;       { Number of Minutes in Time Bank           }
  259.     TimeBankToday: INTEGER;       { Time Added to Time Bank Today            }
  260.     TrapActivity : BOOLEAN;       { Trapping User's Activity?                }
  261.     TrapSeperate : BOOLEAN;       { If above=TRUE, Use seperate TRAP file?   }
  262.     AutoChatLog  : BOOLEAN;       { Automatically Log User's Chat Activity?  }
  263.     ChatLogSep   : BOOLEAN;       { If above=TRUE, Use seperate CHAT file?   }
  264.     LogSep       : BOOLEAN;       { Log this user seperately?                }
  265.     ScreenLength : BYTE;          { Number of Lines on Screen                }
  266.     ColorScheme  : INTEGER;       { Color Scheme Number (SCHEME.DAT)         }
  267.     UserStartMenu: INTEGER;       { Menu Number to Start User On             }
  268.     TimeBankWith : INTEGER;       { time withdrawn from timebank TODAY       }
  269.  
  270.     RESERVED4    : ARRAY[1..48]
  271.                      of BYTE;     { RESERVED - DO NOT MODIFY                 }
  272.     LastFConf    : BYTE;          { Last File Conference In                  }
  273.     LastFBase    : INTEGER;       { Last File Base In                        }
  274.     UploadKB     : LONGINT;       { KB Uploaded                              }
  275.     DownloadKB   : LONGINT;       { KB Downloaded                            }
  276.     UploadFiles  : INTEGER;       { Number of Files Uploaded                 }
  277.     DownloadFiles: INTEGER;       { Number of Files Downloaded               }
  278.     FilePoints   : INTEGER;       { File Points                              }
  279.     DefProtocol  : CHAR;          { Default Protocol, @=Ask Each Transfer    }
  280.                                   { File Bases that User is Sysop of         }
  281.     FBaseSysop   : ARRAY[1..20] of INTEGER;
  282.  
  283.     RESERVED5    : ARRAY[1..50]
  284.                      of BYTE;     { RESERVED - DO NOT MODIFY                 }
  285.     LastMConf    : BYTE;          { Last Message Conference In               }
  286.     LastMBase    : INTEGER;       { Last Message Base In                     }
  287.     NumPosts     : INTEGER;       { Number of Posts                          }
  288.     NumFeedback  : INTEGER;       { Number of Feedback Sent                  }
  289.     MessageRuler : BYTE;          { Message Ruler 0 = OFF  1 = ON            }
  290.     MessageEditor: SHORTINT;      {-1 : Nexus Full-Screen Editor             }
  291.                                   { 0 : Nexus Line Editor                    }
  292.                                   { 1^: External Editor                      }
  293.                                   { Message Bases that user is Sysop of      }
  294.     MBaseSysop   : ARRAY[1..20] of INTEGER;
  295.  
  296.     Subscription : BYTE;          { Current Subscription Level               }
  297.     SubDate      : LONGINT;       { Subscription Level Start Date/Time in    }
  298.                                   { UNIX Date/Time Stamp format              }
  299.     Language     : BYTE;          { Language this user has selected          }
  300.     RESERVED6    : ARRAY[1..99]
  301.                        of BYTE;   { RESERVED - DO NOT MODIFY                 }
  302. END;
  303.  
  304. {----------------------------------------------------------------------------}
  305. { Filename: USERxxxx.DAT    (xxxx = Node number in format 0001, 0010, etc.)  }
  306. { Location: DATA Directory                                                   }
  307. { Format  : 1 <OnlineREC> record                                             }
  308. {                                                                            }
  309. { Notes   : Used to provide information to external programs about a         }
  310. {           particular node's current status.  This information is useful    }
  311. {           for a door program that is written specifically to work with     }
  312. {           Nexus, such as a callback verifier or multiline chat program.    }
  313. {           Much of the information found in the USERS.DAT file may not be   }
  314. {           necessary, so the information in the USERxxxx.DAT file may be    }
  315. {           used.  If more information is needed, the <Number> variable      }
  316. {           points to the record number in the USERS.DAT file where this     }
  317. {           user is located.                                                 }
  318. {                                                                            }
  319. {           This file is automatically created when a user logs on to Nexus  }
  320. {           and is deleted when the user logs off.  Nexus creates a file for }
  321. {           the node if it is at the Waiting for Caller screen logged in and }
  322. {           places a 2 in the appropriate index value in the ONLINE.IDX so   }
  323. {           that other nodes of Nexus will see that this node is waiting for }
  324. {           a caller.                                                        }
  325. {----------------------------------------------------------------------------}
  326.  
  327. OnlineREC=
  328. RECORD
  329.     Name         : STRING[36];    { User Logon Name                          }
  330.     real         : STRING[36];    { User Real Name                           }
  331.     UserID       : LONGINT;       { UserID                                   }
  332.     TimeLeft     : INTEGER;
  333.     RESERVED     : ARRAY[1..31] of
  334.                         BYTE;     { RESERVED - DO NOT MODIFY                 }
  335.     business     : STRING[40];    { User Business (calling from)             }
  336.     number       : INTEGER;       { User Number                              }
  337.     activity     : STRING[20];    { Current Activity                         }
  338.     available    : BOOLEAN;       { User Available?                          }
  339.     paged        : BOOLEAN;       { User Paged?                              }
  340.     pagedby      : INTEGER;       { Paged by Node Number                     }
  341.     pagedstr     : STRING[72];    { Paged Reason                             }
  342.     Baud         : WORD;          { 0 = Local  Other = Connect Rate / 10     }
  343.     LockBaud     : WORD;          { 0 = Port not locked                      }
  344.                                   { Locked Baud Rate / 10                    }
  345.     Comport      : WORD;          { 0=Local                                  }
  346.     Comtype      : BYTE;          { 0=Fossil  1=Interrupt (internal)         }
  347.                                   { 2=Digiboard                              }
  348.     emulation    : WORD;          { 0=TTY   1=ANSI   2=RIPscrip              }
  349. END;
  350.  
  351. {----------------------------------------------------------------------------}
  352. { Filename: TAGLINES.DAT                                                     }
  353. { Location: DATA Directory                                                   }
  354. { Format  : 1 <TagREC> record per entry                                      }
  355. {                                                                            }
  356. { Notes   : Used to provide users the ability to add taglines to their       }
  357. {           messages.  A global tagline file is able to be added to by the   }
  358. {           users and then they may select any of the taglines to add to     }
  359. {           their message.                                                   }
  360. {----------------------------------------------------------------------------}
  361.   
  362. TagREC=
  363. RECORD
  364.     Tag          : STRING[75];    { Tagline }
  365. END;
  366.  
  367. {----------------------------------------------------------------------------}
  368. { Filename: NETWORK.DAT                                                      }
  369. { Location: DATA Directory                                                   }
  370. { Format  : 1 <NetworkREC> record                                            }
  371. {                                                                            }
  372. { Notes   : Used to store default values and information regarding message   }
  373. {           networks.  There is one record of <NetworkREC> in the            }
  374. {           NETWORK.DAT file.                                                }
  375. {----------------------------------------------------------------------------}
  376.  
  377. NetworkREC=
  378. RECORD
  379.     Address      : ARRAY[1..30] of               { Address Information       }
  380.         RECORD
  381.                 Zone  : WORD;     { Zone number                              }
  382.                 Net   : WORD;     { Net number                               }
  383.                 Node  : WORD;     { Node number                              }
  384.                 Point : WORD;     { Point number                             }
  385.         END;
  386.     Origins      : ARRAY[1..20] of STRING[50];   { Origin Lines              }
  387.     RES2         : ARRAY[1..807] of BYTE;        { RESERVED - DO NOT MODIFY  }
  388.     NodelistType : BYTE;          { Nodelist Type Found in NODELIST PATH     }
  389.                                   {     0: No Nodelist                       }
  390.                                   {     1: Version 7                         }
  391.                                   {     2: Frontdoor                         }
  392.                                   { other: RESERVED                          }
  393.                                   { currently UNUSED                         }
  394.     Text_color   : BYTE;          { default color of standard text           }
  395.     Quote_color  : BYTE;          { default color of quoted text             }
  396.     Tag_color    : BYTE;          { default color of tagline                 }
  397.     Oldtear_color: BYTE;          { default color old tearline ( ~~~ or ___ )}
  398.     Tear_color   : BYTE;          { default color of tear line               }
  399.     Origin_color : BYTE;          { default color of origin line             }
  400.     SKludge      : BOOLEAN;       { default strip kludge lines?              }
  401.     SSeenby      : BOOLEAN;       { default strip SEEN-BY lines?             }
  402.     SOrigin      : BOOLEAN;       { default strip origin line?               }
  403.     nodelistpath : STRING[79];    { Path to Nodelist Files                   }
  404.     isprivate    : BOOLEAN;       { Default Netmail Private?                 }
  405.     iscrash      : BOOLEAN;       { Default Netmail Crash?                   }
  406.     isfattach    : BOOLEAN;       { Default Netmail File Attach?             }
  407.     iskillsent   : BOOLEAN;       { Default Netmail Kill/Sent?               }
  408.     ishold       : BOOLEAN;       { Default Netmail Hold?                    }
  409.     isfilereq    : BOOLEAN;       { Default Netmail File Request?            }
  410.     isreqrct     : BOOLEAN;       { Default Netmail ReturnReceiptRequest?    }
  411.     isdirect     : BOOLEAN;       { Default Netmail Direct?                  }
  412.     res          : ARRAY[1..12] of BYTE;    { RESERVED - DO NOT MODIFY       }
  413. END;
  414.  
  415. {----------------------------------------------------------------------------}
  416. { Filename: INTERNET.DAT                                                     }
  417. { Location: DATA Directory                                                   }
  418. { Format  : 1 <InternetREC> record                                           }
  419. {                                                                            }
  420. { Notes   : Used to store default values and information regarding Internet  }
  421. {           gateways.  There is one record of <InternetREC> in the           }
  422. {           INTERNET.DAT file.                                               }
  423. {----------------------------------------------------------------------------}
  424.  
  425. InternetREC=
  426. RECORD
  427.     Gateways:ARRAY[1..30] of
  428.       RECORD
  429.         Name:STRING[40];          { Name of Gateway (for informational use)  }
  430.         ToName:STRING[36];        { Name messages should be addressed to,    }
  431.                                   { many times 'UUCP'                        }
  432.         ToAddress:RECORD          { Address that messages should be addressed}
  433.                                   { to                                       }
  434.                 Zone  : WORD;         { Zone number                          }
  435.                 Net   : WORD;         { Net number                           }
  436.                 Node  : WORD;         { Node number                          }
  437.                 Point : WORD;         { Point number                         }
  438.         END;
  439.         FromAddress:BYTE;         { Address (from NETWORK.DAT) that messages }
  440.                                   { should come from                         }
  441.         RESERVED1:ARRAY[1..30] of
  442.                         BYTE;     { RESERVED - DO NOT MODIFY                 }
  443.       END;
  444.     RESERVED2:ARRAY[1..50] of
  445.                         BYTE;     { RESERVED - DO NOT MODIFY                 }
  446. END;
  447.  
  448. {----------------------------------------------------------------------------}
  449. { Filename: CALLINFO.DAT, CALLINFO.xxx                                       }
  450. { Location: DATA Directory                                                   }
  451. { Format  : 1 <CallInfoREC> record for each date                             }
  452. {                                                                            }
  453. { Notes   : Used to store information regarding statistics per node (in the  }
  454. {           CALLINFO.xxx files) and for the whole system (CALLINFO.DAT).     }
  455. {           These statistics are on a per date basis.  Dates may or may not  }
  456. {           be consecutive.  If a date does not exist, there was no activity.}
  457. {----------------------------------------------------------------------------}
  458.  
  459. CallInfoREC=
  460. RECORD
  461.     Date:STRING[8];                     { Date of entry                      }
  462.     UserBaud:ARRAY[0..40] of INTEGER;   { Number of calls at this particular }
  463.                                         { baud rate.  Baud rates are:        }
  464.                                         {                                    }
  465.                                         {  0 - 300     1 - 1200    2 - 2400  }
  466.                                         {  3 - 4800    4 - 7200    5 - 9600  }
  467.                                         {  6 - 12000   7 - 14400   8 - 16800 }
  468.                                         {  9 - 19200  10 - 21600  11 - 24000 }
  469.                                         { 12 - 26400  13 - 28800  14 - 31200 }
  470.                                         { 15 - 33600  16 - 38400  17 - n/a   }
  471.                                         { 18 - n/a    19 - n/a    20 - n/a   }
  472.                                         { 21 - n/a    22 - 57600  23 - n/a   }
  473.                                         { 24 - n/a    25 - n/a    26 - n/a   }
  474.                                         { 27 - n/a    28 - 76800  29 - n/a   }
  475.                                         { 30 - n/a    31 - n/a    32 - n/a   }
  476.                                         { 33 - n/a    34 - 115200 35 - n/a   }
  477.                                         { 36 - n/a    37 - n/a    38 - n/a   }
  478.                                         { 39 - n/a    40 - All others        }
  479.     Active,                             { Percent Activity                   }
  480.     Calls,                              { Number of Calls                    }
  481.     Newusers,                           { Number of New Users                }
  482.     Pubpost,                            { Public Posts                       }
  483.     Comments,                           { Comments to SysOp                  }
  484.     CriticalErrors:INTEGER;             { Critical Errors                    }
  485.     Uploads,                            { Files Uploaded                     }
  486.     Downloads:INTEGER;                  { Files Downloaded                   }
  487.     UlKB,                               { KB Uploaded                        }
  488.     DlKB:LONGINT;                       { KB Downloaded                      }
  489.     RESERVED:ARRAY[1..20] of BYTE;      { RESERVED - DO NOT MODIFY           }
  490. END;
  491.  
  492. {----------------------------------------------------------------------------}
  493. { Filename: TOTALS.DAT, TOTALS.xxx                                           }
  494. { Location: DATA Directory                                                   }
  495. { Format  : 1 <TotalsREC> record in each file                                }
  496. {                                                                            }
  497. { Notes   : Used to store information regarding statistics per node (in the  }
  498. {           TOTALS.xxx files) and for the whole system (TOTALS.DAT).  This   }
  499. {           information is information since the <date> field.               }
  500. {----------------------------------------------------------------------------}
  501.  
  502. TotalsREC=                          
  503. RECORD
  504.     Date:STRING[8];                     { Date this information is since     }
  505.     Userbaud:ARRAY[0..40] of LONGINT;   { Number of calls at this particular }
  506.                                         { baud rate.  Baud rates are:        }
  507.                                         {                                    }
  508.                                         {  0 - 300     1 - 1200    2 - 2400  }
  509.                                         {  3 - 4800    4 - 7200    5 - 9600  }
  510.                                         {  6 - 12000   7 - 14400   8 - 16800 }
  511.                                         {  9 - 19200  10 - 21600  11 - 24000 }
  512.                                         { 12 - 26400  13 - 28800  14 - 31200 }
  513.                                         { 15 - 33600  16 - 38400  17 - n/a   }
  514.                                         { 18 - n/a    19 - n/a    20 - n/a   }
  515.                                         { 21 - n/a    22 - 57600  23 - n/a   }
  516.                                         { 24 - n/a    25 - n/a    26 - n/a   }
  517.                                         { 27 - n/a    28 - 76800  29 - n/a   }
  518.                                         { 30 - n/a    31 - n/a    32 - n/a   }
  519.                                         { 33 - n/a    34 - 115200 35 - n/a   }
  520.                                         { 36 - n/a    37 - n/a    38 - n/a   }
  521.                                         { 39 - n/a    40 - All others        }
  522.     Active,                             { Percent Activity                   }
  523.     Calls,                              { Number of Calls                    }
  524.     Newusers,                           { Number of New Users                }
  525.     Pubpost,                            { Public Posts                       }
  526.     Comments,                           { Comments to SysOp                  }
  527.     CriticalErrors:LONGINT;             { Critical Errors                    }
  528.     Uploads,                            { Files Uploaded                     }
  529.     Downloads:LONGINT;                  { Files Downloaded                   }
  530.     RESERVED:ARRAY[1..100] of BYTE;     { RESERVED - DO NOT MODIFY           }
  531. END;
  532.  
  533. {----------------------------------------------------------------------------}
  534. { Filename: ARCHIVER.DAT                                                     }
  535. { Location: DATA Directory                                                   }
  536. { Format  : 1 <ArchiverREC> record in each file                              }
  537. {                                                                            }
  538. { Notes   : Used to store information regarding statistics per node (in the  }
  539. {           TOTALS.xxx files) and for the whole system (TOTALS.DAT).  This   }
  540. {           information is information since the <date> field.               }
  541. {----------------------------------------------------------------------------}
  542.  
  543. ArchiverREC=
  544. RECORD
  545.     Active    : BOOLEAN;          { Is archiver active to be used?           }
  546.                                   { Note if set to view with internal methods}
  547.                                   { Nexus will still allow viewing even if   }
  548.                                   { archiver is disabled.                    }
  549.     Name      : STRING[40];       { Name of archiver                         }
  550.     ListFiles : STRING[80];       { List archive commandline (blank=internal)}
  551.     Compress  : STRING[80];       { Compress archive commandline             }
  552.     Decompress: STRING[80];       { Decompress archive commandline           }
  553.     TestFiles : STRING[80];       { Test archive commandline                 }
  554.     Comment   : STRING[80];       { Comment archive commandline              }
  555.     ErrorLevel: INTEGER;          { Errorlevel for success on external       }
  556.     Extension : STRING[3];        { File extention (used only for records 12+}
  557.     RESERVED  : ARRAY[1..100] of BYTE;  { RESERVED -- DO NOT MODIFY          }
  558. END;
  559.  
  560. {----------------------------------------------------------------------------}
  561. { Filename: NODExxxx.DAT                                                     }
  562. { Location: DATA Directory                                                   }
  563. { Format  : 1 <NodeREC> Record                                               }
  564. {                                                                            }
  565. { Notes   : Used to store modem and node specific information for each node. }
  566. {           There will be one file for each node that has been configured    }
  567. {           for use in Nexus.                                                }
  568. {----------------------------------------------------------------------------}
  569.  
  570. NodeREC=
  571. RECORD
  572.     PortNumber   : BYTE;          { Com Port Number/Digiboard Port Number    }
  573.                                   { 1-8  : Fossil/Interrupt                  }
  574.                                   { 1-30 : Digiboard                         }
  575.     MaximumBaud  : LONGINT;       { Maximum/Locked Baud Rate                 }
  576.     LockPort     : BOOLEAN;       { whether to force baud rate               }
  577.     Hangup       : STRING[40];    { hangup string                            }
  578.     drvType      : BYTE;          { 0 : Local Only                           }
  579.                                   { 1 : Fossil                               }
  580.                                   { 2 : Digiboard                            }
  581.                                   { 3 : Interrupt Serial                     }
  582.     chatBegin    : ARRAY[1..7] of 
  583.                         INTEGER;  { Start Time when SysOp is available for   }
  584.                                   { Chat with Users   Start/End=0 Always     }
  585.     chatEnd      : ARRAY[1..7] of
  586.                         INTEGER;  { Chat Time End                            }
  587.     dlBegin      : ARRAY[1..7] of
  588.                         INTEGER;  { Start Time when Users may download files }
  589.                                   { Start/End = 0 for always                 }
  590.     dlEnd        : ARRAY[1..7] of
  591.                         INTEGER;  { Download Time End                        }
  592.     MinBaudRate  : LONGINT;       { Minimum Baud Rate allowed on System      }
  593.     _minStart    : ARRAY[1..7] of
  594.                         INTEGER;  { Start Time when Callers below the Min.   }
  595.                                   { baud rate may log on to the system       }
  596.                                   { Start/End=0 Never allowed on             }
  597.     _minEnd      : ARRAY[1..7] of
  598.                         INTEGER;  { End Below Min Time                       }
  599.     _mindlStart  : ARRAY[1..7] of 
  600.                         INTEGER;  { Start Time when Callers below the Min.   }
  601.                                   { Baud rate may download files.            }
  602.                                   { Start/End = 0  Never Allow               }
  603.     _mindlEnd    : ARRAY[1..7] of
  604.                         INTEGER;  { Below Min. DL Time End                   }
  605.     NoNewUsers   : BOOLEAN;       { This node does not accept New Users      }
  606.     swapProtocol : BYTE;
  607.     swapArchiver : BYTE;
  608.     swapDoor     : BYTE;
  609.     swapEditor   : BYTE;
  610.     swapChat     : BYTE;
  611.     swapLShell   : BYTE;
  612. END;
  613.  
  614. {----------------------------------------------------------------------------}
  615. { Filename: SYSTEM.DAT                                                       }
  616. { Location: DATA Directory                                                   }
  617. { Format  : 1 <SystemREC> record                                             }
  618. {                                                                            }
  619. { Notes   : Used to store information neccessary for the BBS to operate.     }
  620. {           This information is sensitive, and should be modified with care. }
  621. {           Modifying the information this file improperly could render a    }
  622. {           system totally useless, and could seriously damage data files.   }
  623. {----------------------------------------------------------------------------}
  624.  
  625. SystemREC=                            { SYSTEM.DAT }
  626. RECORD
  627.     callernum    : LONGINT;       { System Caller Number                     }
  628.     numusers     : LONGINT;       { Number of Callers to this node           }
  629.     highnode     : INTEGER;       { Highest Node Number Ever Executed        }
  630.     lastdate     : STRING[8];     { Last Date That Nexus Was Run             }
  631.     LastMBaseID:LONGINT;          { Last MBaseID that was used               }
  632.     LastFBaseID:LONGINT;          { Last FBaseID that was used               }
  633.     LastDoorID:LONGINT;           { Last DoorID that was used                }
  634.     LastEditorID:LONGINT;         { Last EditorID that was used              }
  635.     LastUserID:LONGINT;           { Last UserID that was used                }
  636.     NKeywords:LONGINT;            { FUTURE USE                               }
  637.     NDescLines:LONGINT;           { FUTURE USE                               }
  638.     RESERVED     : ARRAY[1..47] of BYTE;        { RESERVED - DO NOT MODIFY   }
  639. END;
  640.  
  641. {----------------------------------------------------------------------------}
  642. { Filename: SECURITY.DAT                                                     }
  643. { Location: DATA Directory                                                   }
  644. { Format  : Record #0 is holding record                                      }
  645. {           100 <SecurityREC> records                                        }
  646. {                                                                            }
  647. { Notes   : Used to store security level configuration for each security     }
  648. {           level.  The security level is not used if the <Active> variable  }
  649. {           is set to FALSE.                                                 }
  650. {----------------------------------------------------------------------------}
  651.  
  652.  
  653. SecurityREC=
  654. RECORD
  655.     Active       : BOOLEAN;       { Is Security Level begin used?            }
  656.     Description  : STRING[20];    { Description of Security Level            }
  657.     CallsPerDay  : BYTE;          { Number of Calls Per Day for SL           }
  658.     TimePerCall  : INTEGER;       { Time Per Call (minutes)  0=Use Time/Day  }
  659.     TimePerDay   : INTEGER;       { Time Per Day (minutes)                   }
  660.     PostPerCall  : INTEGER;       { Posts Per Call Required                  }
  661.     DLRatioFiles : INTEGER;       { Number of Files DLed before 1 upload req }
  662.     DLRatioKb    : INTEGER;       { Number of Kb DLed before 1 Kb required   }
  663.     MaxInTB      : INTEGER;       { Maximum amount in Time Bank              }
  664.     WithTBDay    : INTEGER;       { Withdrawal Maximum per Day               }
  665.     WithTBCall   : INTEGER;       { Withdrawal Maximum per Call              }
  666.     AddTBDay     : INTEGER;       { Maximum minutes per Day can be Added     }
  667.     AddTBCall    : INTEGER;       { Maximum minutes per Call can be Added    }
  668.     RESERVED1    : ARRAY[1..10] of BYTE;      { RESERVED - DO NOT MODIFY     }
  669.     MaxDLPerCall : ARRAY[1..12] of INTEGER;   { Max Files DLed based on baud }
  670.                                   {           1 =300    2 =1200   3 =2400    }
  671.                                   { 4 =4800   5 =7200   6 =9600   7 =12000   }
  672.                                   { 8 =14400  9 =19200  10=38400  11=57600   }
  673.                                   { 12=115200                                }
  674.     RESERVED2    : ARRAY[1..8] of INTEGER;    { RESERVED - DO NOT MODIFY     }
  675.     MaxKbPerCall : ARRAY[1..12] of LONGINT;   { Max Kb DLed based on baud    }
  676.                                   {           1 =300    2 =1200   3 =2400    }
  677.                                   { 4 =4800   5 =7200   6 =9600   7 =12000   }
  678.                                   { 8 =14400  9 =19200  10=38400  11=57600   }
  679.                                   { 12=115200                                }
  680.     RESERVED3    : ARRAY[1..8] of INTEGER;    { RESERVED - DO NOT MODIFY     }
  681. end;
  682.  
  683. {----------------------------------------------------------------------------}
  684. { Filename: MATRIX.DAT                                                       }
  685. { Location: Main NEXUS Directory                                             }
  686. { Format  : 1 <MatrixREC> Record                                             }
  687. {                                                                            }
  688. { Notes   : This is the main Nexus Data File.  It contains various info      }
  689. {           regarding the general setup of the system.  This file will       }
  690. {           usually be read before any other data files in order to obtain   }
  691. {           the path information.  You may obtain the location of this file  }
  692. {           (i.e. the main Nexus Directory) by getting the NEXUS environment }
  693. {           variable ( GETENV('NEXUS'); ).  More information on the Nexus    }
  694. {           environment variable will be found in ENVIRON.DOC in the Nexus   }
  695. {           Developer's Kit.                                                 }
  696. {                                                                            }
  697. {----------------------------------------------------------------------------}
  698.  
  699. MatrixREC=
  700. RECORD
  701.     MajorVersion : BYTE;           { major version number                    }
  702.     MinorVersion : BYTE;           { major version number                    }
  703.     DataPATH     : STRING[79];     { DATA path                               }
  704.     GraphicsPATH : STRING[79];     { GRAPHICS path                           }
  705.     MenuPATH     : STRING[79];     { MENUS path                              }
  706.     LogPATH      : STRING[79];     { LOG path                                }
  707.     MessagePATH  : STRING[79];     { MESSAGE path                            }
  708.     UtilityPATH  : STRING[79];     { UTILITY path                            }
  709.     SemaphorePATH: STRING[79];     { SEMAPHORE FILE path                     }
  710.     FileReqPATH  : STRING[79];     { FILE REQUEST Holding path               }
  711.     FilePATH     : STRING[79];     { Default FILE path (.NFB Files)          }
  712.     TempPATH     : STRING[79];     { TEMP path (node temp is NODExxxx under) }
  713.     SwapPATH     : STRING[79];     { SWAP path (node swap is NODExxxx under) }
  714.     NetmailPATH  : STRING[79];     { Path To NETMAIL Directory               }
  715.     ExtUploadPATH: STRING[79];     { Path to external program run after      }
  716.                                    { an upload and before checking for       }
  717.                                    { FILE_ID.DIZ                             }
  718.     FileAttPATH  : STRING[79];     { RESERVED - DO NOT MODIFY                }
  719.     RESERVED1path: STRING[79];     { RESERVED - DO NOT MODIFY                }
  720.     
  721.     BBSName      : STRING[80];     { BBS name                                }
  722.     RESERVED1    : ARRAY[1..44]
  723.                         of BYTE;   { RESERVED - DO NOT MODIFY                }
  724.     SysopName    : STRING[30];     { SysOp's Full Real Name or Alias         }
  725.     MaximumUsers : INTEGER;        { Currently unused                        }
  726.     CurrentBuild : BYTE;           { Current Build number (1 => .01 )        }
  727.     CurBuildMod  : CHAR;           { Current Build Modifier (should be       }
  728.                                    { appended to the build number (.01a)     }
  729.                                    { will be #32 if no modifier              }
  730.     RESERVED2    : ARRAY[1..54] of
  731.                         BYTE;      { RESERVED - DO NOT MODIFY                }
  732.     akSysOp      : STRING[20];     { SysOp Access Key (BLANK for None)       }
  733.     akNewUser    : STRING[20];     { NewUser Access Key (BLANK for None)     }
  734.     RESERVED3    : ARRAY[1..62] of
  735.                         BYTE;      { RESERVED - DO NOT MODIFY                }
  736.     PreEventWarn : INTEGER;        { Time before event Warning (min)         }
  737.     defLanguage  : BYTE;           { Default Language (FUTURE)               }
  738.     RESERVED4    : ARRAY[1..29] of
  739.                         BYTE;      { RESERVED - DO NOT MODIFY                }
  740.  
  741.     acsSysOp     : ACString;       { SysOp Access String                     }
  742.     acsCoSysOp   : ACString;       { Co-SysOp Access String                  }
  743.     acsMsgSysOp  : ACString;       { Message Base SysOp Access String        }
  744.     acsFileSysOp : ACString;       { File Base SysOp Access String           }
  745.     acsSeeAKey   : ACString;       { See Access Key at Logon Access String   }
  746.     acsSeeSysOpAK: ACString;       { See SysOp Access Key remotely           }
  747.     acsNormalPost: ACString;       { Post Public Message Access String       }
  748.     acsNetmail   : ACString;       { Post Netmail Access String              }
  749.     acsSeeUnval  : ACString;       { See Unvalidated Files Access String     }
  750.     acsDLUnval   : ACString;       { Download Unvalidated Files Access String}
  751.     acsNoDLRatio : ACString;       { No UL/DL Ratio Access String            }
  752.     acsRESERVED1 : ACString;       { RESERVED - DO NOT MODIFY                }
  753.     acsNoFilePts : ACString;       { No Filepoint Checking Access String     }
  754.     acsULValidate: ACString;       { Uploads Need Validation Access String   }
  755.     acsSetNetFlag: ACString;       { Set Netmail Flags Access String         }
  756.     acsNetOutZone: ACString;       { Netmail Out-of-Zone Access String       }
  757.     acsNoNodeChk : ACString;       { No Nodelist Check Access String         }
  758.     acsUntagMand : ACString;       { Allow to untag mandatory bases?         }
  759.     RESERVED5    : ARRAY[1..189] of
  760.                         BYTE;      { RESERVED - DO NOT MODIFY                }
  761.  
  762.     maxFeedback  : BYTE;           { Maximum Feedback per call               }
  763.     maxPublicPost: BYTE;           { Maximum Public Posts per call           }
  764.     maxPage      : BYTE;           { Maximum Sysop Pages per call            }
  765.     maxMsgLines  : BYTE;           { Maximum Lines in Message                }
  766.     maxCSMsgLines: BYTE;           { Maximum Lines in Message for Co-SysOp + }
  767.     maxLogonTries: BYTE;           { Maximum Attempts to enter Access Key    }
  768.     chatSysOp    : BYTE;           { SysOp color in chat mode (TEXTATTR)     }
  769.     chatUser     : BYTE;           { User color in chat mode (TEXTATTR)      }
  770.     minMsgSpace  : INTEGER;        { Minimum KB drive space left to post     }
  771.     RESERVED6    : ARRAY[1..2] of
  772.                         BYTE;      { RESERVED - DO NOT MODIFY                }
  773.     KeepLogDays  : BYTE;           { Days to keep NEXxxxx.LOG                }
  774.     ScreenLength : BYTE;           { Default Screen Length (4-50)            }
  775.     RESERVED7    : ARRAY[1..31] of
  776.                         BYTE;      { RESERVED - DO NOT MODIFY                }
  777.  
  778.     AskAlias     : BOOLEAN;        { Prompt user for Alias Name or use Real  }
  779.     PhoneAccess  : BOOLEAN;        { Prompt for last 4 digits at logon       }
  780.     lSecurity    : BOOLEAN;        { Local Security: Ask Access Key at Local }
  781.                                    { Logon                                   }
  782.     lViewSecurity: BOOLEAN;        { Local View Security: Display Access Keys}
  783.                                    { locally as they are entered             }
  784.     GlobalDump   : BOOLEAN;        { Dump all screen output to GLOBxxxx.TRP  }
  785.     AutoChatDump : BOOLEAN;        { Automatically Dump all chat activity to }
  786.                                    { CHATxxxx.LOG                            }
  787.     AliasPrimary : BOOLEAN;        { Is Alias used as primary display name in}
  788.                                    { items such as User Listings, Node Lists,}
  789.                                    { etc.                                    }
  790.     AllowIEMSI   : BOOLEAN;        { Allow IEMSI logins?                     }
  791.     RESERVED8    : ARRAY[1..9] of
  792.                         BYTE;      { RESERVED - DO NOT MODIFY                }
  793.  
  794.  
  795.     NewUserApp   : INTEGER;        { User Record # to send new user          }
  796.                                    { application to (0=Inactive)             }
  797.     InactBeep    : INTEGER;        { Minutes before Inactivity Beep          }
  798.     InactLogoff  : INTEGER;        { Minutes of Inactvity before Logoff      }
  799.     EMSOverlay   : BOOLEAN;        { Attempt to load overlays in EMS         }
  800.     BiosVideo    : BOOLEAN;        { Use ROM BIOS for local video output     }
  801.     CGASnow      : BOOLEAN;        { Suppress snow on CGA systems            }
  802.     ProtOutput   : BOOLEAN;        { Display output for protocols?           }
  803.     ArcOutput    : BOOLEAN;        { Display output for archivers?           }
  804.     UseEXTchat   : BOOLEAN;        { Use External Chat defined in record 0 of}
  805.                                    { DOORS.DAT?                              }
  806.     RESERVED9    : ARRAY[1..27] of
  807.                         BYTE;      { RESERVED - DO NOT MODIFY                }
  808.  
  809.     ArcComments  : ARRAY[1..3] of
  810.                         STRING[80];{ Path/Filename of Comment Text Files     }
  811.     fULDLRatio   : BOOLEAN;        { UL/DL Ratio System in use?              }
  812.     fFilePoint   : BOOLEAN;        { FilePoint System in use?                }
  813.                                    { Either, Both, or None of the above two  }
  814.                                    { items may be set to TRUE.               }
  815.     FPCompRatio  : BYTE;           { Percentage of File's File Points that   }
  816.                                    { will be awarded to user upon upload     }
  817.                                    { (0-255)                                 }
  818.     FPKBperPoint : BYTE;           { When file is Uploaded, the Number of    }
  819.                                    { KB required to assign 1 File Point to   }
  820.                                    { the File.  Example: FPKBperPoint is set }
  821.                                    { to 10.  File uploaded is 20Kb in size.  }
  822.                                    { FilePoints assigned to that file would  }
  823.                                    { be 2.                                   }
  824.     ULTimeRefund : BYTE;           { Percentage of UL time spent that is     }
  825.                                    { refunded to the user's account after UL }
  826.                                    { is complete.                            }
  827.     RESERVED10   : BYTE;           { RESERVED - DO NOT MODIFY                }
  828.     AutoValidate : BOOLEAN;        { Validate files automatically?           }
  829.     RemRedirect  : STRING[10];     { Remote redirection device (COMx,etc)    }
  830.     maxTempKB    : INTEGER;        { Maximum KB allowed in Temporary Dirs    }
  831.     minResumeKB  : INTEGER;        { Minimum Filesize in KB to allow resume  }
  832.     minUploadKB  : INTEGER;        { Minimum KB required for Uploads         }
  833.     DupSearchType: BYTE;           { Search for duplicate filenames on upload}
  834.                                    {      0 = NONE                           }
  835.                                    {      1 = All Bases                      }
  836.                                    {      2 = Only Hard Drive Bases          }
  837.     DupStrict    : BOOLEAN;        { Search for duplicates strictly          }
  838.                                    { TRUE = Match Files with Exact Filename  }
  839.                                    {        ONLY.  (Example: File user is    }
  840.                                    {        uploading is FIRST.ARJ.  File    }
  841.                                    {        that already exists is FIRST2.ZIP}
  842.                                    {        This file would NOT be matched.) }
  843.                                    { FALSE= Match Files with Filename found  }
  844.                                    {        somewhere in it.  (Example: File }
  845.                                    {        user is uploading is FIRST.ARJ.  }
  846.                                    {        File that already exists is      }
  847.                                    {        FIRST2.ZIP.  This file WOULD BE  }
  848.                                    {        MATCHED.                         }
  849.     FileListLines: BYTE;           { 0 - 10 lines                            }
  850.                                    { 1 - 5 lines                             }
  851.                                    { 2 - 1 line                              }
  852.     PrvSysOpBase : INTEGER;        { -1 DISABLED                             }
  853.     OfflineReq   : BOOLEAN;        { Allow Offline Files to be requested?    }
  854.     ConvertWithAV: BOOLEAN;        { Convert files with known AV stamp?      }
  855.     ConvertSame  : BOOLEAN;        { Convert archives even if source and     }
  856.                                    { destination are same archive type?      }
  857.     AddWithAV    : BOOLEAN;        { Allow adding of files to archives with  }
  858.                                    { an AV stamp?                            }
  859.     RESERVED11   : ARRAY[1..13] of
  860.                         BYTE;      { RESERVED - DO NOT MODIFY                }
  861.  
  862.     TimeZone     : BYTE;           { Local Time Zone                         }
  863.                                    { See TIMEZONE.DOC for more info          }
  864.     RESERVED12   : ARRAY[1..214] of
  865.                         BYTE;      { RESERVED - DO NOT MODIFY                }
  866. END;
  867.  
  868. {----------------------------------------------------------------------------}
  869. { Filename: SUBSCRIP.DAT                                                     }
  870. { Location: DATA Directory                                                   }
  871. { Format  : Record #0 is holding record                                      }
  872. {           Up to 255 <SubscriptionREC> Records (plus holding record)        }
  873. {                                                                            }
  874. { Notes   : Used to store subscription level configuration.  There may be up }
  875. {           to 255 subscription levels assigned, and each level will have a  }
  876. {           record for it.  This record number corresponds directly to the   }
  877. {           UserREC.Subscription variable.                                   }
  878. {----------------------------------------------------------------------------}
  879.  
  880. SubscriptionREC=
  881. RECORD
  882.     Description  : STRING[40];    { Description of Subscription Level        }
  883.     SL           : BYTE;          { Security Level of Subscription Level     }
  884.     ARflags      : SET of
  885.                         ARFlagSet;{ AR Flag Set for this Subscription Level  }
  886.     ARmodifier   : BYTE;          { 0: Set AR Flags to this Set              }
  887.                                   { 1: Soft update of AR Flags               }
  888.     ACflags      : SET of UFlags; { AC Flag Set for this Subscription Level  }
  889.     ACmodifier   : BYTE;          { 0: Set AC Flags to this Set              }
  890.                                   { 1: Soft update of AC Flags               }
  891.     FilePoints   : INTEGER;       { File Points for this Subscription Level  }
  892.     FPmodifier   : BYTE;          { 0: Set FP to value                       }
  893.                                   { 1: Add value to FP                       }
  894.                                   { 2: Subtract value from FP                }
  895.     Credits      : LONGINT;       { Credits for this Subscription Level      }
  896.     Cmodifier    : BYTE;          { 0: Set Credits to value                  }
  897.                                   { 1: Add value to Credits                  }
  898.                                   { 2: Subtract value from Credits           }
  899.     TimeBank     : INTEGER;       { Time Bank for this Subscription Level    }
  900.     TBmodifier   : BYTE;          { 0: Set Time Bank to value                }
  901.                                   { 1: Add value to Time Bank                }
  902.                                   { 2: Subtract value from TimeBank          }
  903.     SubLength    : INTEGER;       { Length of subscription level             }
  904.                                   { -1: No length (indefinate)               }
  905.     NewSubLevel  : INTEGER;          { New Subscription Level after expiration  }
  906.     RESERVED     : ARRAY[1..19]
  907.                       OF BYTE;    { RESERVED - DO NOT MODIFY                 }
  908. END;
  909.     
  910. {----------------------------------------------------------------------------}
  911. { Filename: LANGUAGE.DAT                                                     }
  912. { Location: DATA Directory                                                   }
  913. { Format  : Record #0 is holding record                                      }
  914. {           1 record for each installed language                             }
  915. {                                                                            }
  916. { Notes   : Used to store information regarding installed languages.  There  }
  917. {           will be 1 record for each language.  The record number directly  }
  918. {           corresponds to the UserREC.Language variable.                    }
  919. {----------------------------------------------------------------------------}
  920.  
  921. LanguageREC=                          { LANGUAGE.DAT }
  922. RECORD
  923.     Name:STRING[40];                { Description of Language                }
  924.     Filename:STRING[8];             { [FILENAME].NXL                         }
  925.     Menuname:STRING[8];             { [MENUNAME].NXM                         }
  926.     Access:ACString;                { Access Control String                  }
  927.     DisplayPATH:STRING[79];         { Display File Path                      }
  928.                                     { <blank> = Use Default Path             }
  929.     CheckDefPath:BOOLEAN;           { If display file does not exist in      }
  930.                                     { DisplayPATH, check Default Path?       }
  931.                                     { Ignored if DisplayPATH is <blank>      }
  932.     Startmenu:WORD;                 { Start Menu # For this Language         }
  933.                                     { Record number+1 in MENUS.DAT           }
  934.     RESERVED1:ARRAY[1..50] of BYTE; { RESERVED - DO NOT MODIFY               }
  935. END;
  936.  
  937. {----------------------------------------------------------------------------}
  938. { Filename: MBASES.IDX, FBASES.IDX                                           }
  939. { Location: DATA Directory                                                   }
  940. { Format  : 1 <BaseIDX> record for each corresponding Message/File Base      }
  941. {                                                                            }
  942. { Notes   : This is an index containing one record for each message/file base}
  943. {           that exists.  The Offset variable will contain the the offset to }
  944. {           the record number in the file MBASES.DAT/FBASES.DAT for the base.}
  945. {           The Offset variable MUST match the current record number in the  }
  946. {           index file.  The BaseID value will contain the BaseID for the    }
  947. {           base that is referenced by the index.                            }
  948. {----------------------------------------------------------------------------}
  949.  
  950. BaseIDX=
  951. RECORD
  952.         Offset:INTEGER;         { Offset to record # in base data file      }
  953.         BaseID:LONGINT;         { Permanent Base ID - Should match record # }
  954. end;
  955.  
  956. {----------------------------------------------------------------------------}
  957. { Filename: MBASEID.IDX, FBASEID.IDX                                         }
  958. { Location: DATA Directory                                                   }
  959. { Format  : 1 <BaseIDIDX> record for each corresponding Message/File BaseID  }
  960. {                                                                            }
  961. { Notes   : This is the index of all present AND past Message/File BaseID    }
  962. {           values.  When a BaseID is active, it will contain the number,    }
  963. {           which MUST be the same as the record number in the file, and the }
  964. {           offset variable will contain the record number of the appropriate}
  965. {           file (MBASES.DAT/FBASES.DAT) that contains the base information  }
  966. {           that has this BaseID.                                            }
  967. {----------------------------------------------------------------------------}
  968.  
  969. BaseIDIDX=
  970. RECORD
  971.         BaseID:LONGINT;         { Permanent Base ID - Should match record # }
  972.         Offset:INTEGER;         { Offset to record # in base data file      }
  973. end;
  974.  
  975. {----------------------------------------------------------------------------}
  976. { Filename: MBTAGS.IDX                                                       }
  977. { Location: DATA Directory                                                   }
  978. { Format  : 1 <BaseTagIDX> record for each corresponding Message Base        }
  979. {                                                                            }
  980. { Notes   : Quick index to tagnames for Message Bases.                       }
  981. {----------------------------------------------------------------------------}
  982.  
  983. BaseTagIDX=
  984. RECORD
  985.         NetTagname:string[50];      { Network/Blue Wave Tag Name for this    }
  986.                                     { base.  MUST NOT BE DUPLICATED!         }
  987. end;
  988.  
  989. {----------------------------------------------------------------------------}
  990. { Filename: MBASES.DAT                                                       }
  991. { Location: DATA Directory                                                   }
  992. { Format  : 1 <MsgBaseREC> record for each corresponding Message Base        }
  993. {                                                                            }
  994. { Notes   : Message Base Data File, containing all information about each    }
  995. {           message base.  Up to MaxMsgBases of records.                     }
  996. {----------------------------------------------------------------------------}
  997.  
  998. MBFlags=                          { Message Base Flags                       }
  999.  
  1000.    (MBUnhidden,                   { whether *VISIBLE* to users w/o access    }
  1001.     MBRealname,                   { whether real names are forced            }
  1002.     MBFilter,                     { whether to filter ANSI/8-bit ASCII       }
  1003.     MBSKludge,                    { strip IFNA kludge lines                  }
  1004.     MBSSeenby,                    { strip SEEN-BY lines                      }
  1005.     MBNetmail,                    { whether netmail allowed to be sent       }
  1006.                                   { from this base                           }
  1007.     MBSOrigin);                   { strip origin lines                       }
  1008.  
  1009. MBPrivLvl=                        { MSG Types allowed                        }
  1010.  
  1011.    (Private,                      { Private Only                             }
  1012.     Public,                       { Public Only                              }
  1013.     PubPriv);                     { Public OR Private                        }
  1014.  
  1015. MsgBaseREC=
  1016. RECORD
  1017.     Name         : STRING[70];    { Message base description                 }
  1018.     Filename     : STRING[8];     { JAM/SQUISH Message Base Filename         }
  1019.                                   { *NOT NEEDED for .MSG                     }
  1020.     NetTagName   : STRING[50];    { Network Tag Name                         }
  1021.     MBType       : INTEGER;       { 0 = Local                                }
  1022.                                   { 1 = Echo                                 }
  1023.                                   { 2 = Netmail                              }
  1024.                                   { 3 = Internet E-Mail                      }
  1025.     MSGPath      : STRING[40];    { Messages pathname                        }
  1026.                                   { For JAM/Squish this is the path to the   }
  1027.                                   { Message Base Files.  For *.MSG, this is  }
  1028.                                   { the path to the .MSG files               }
  1029.     MBFlag       : SET of
  1030.                         MBFlags;  { Message Base Flags                       }
  1031.     MBPriv       : SET of
  1032.                         MBPrivLvl;{ Message Priveledge Level                 }
  1033.     Access       : ACString;      { Access to this Base                      }
  1034.     PostAccess   : ACString;      { Access to Post on this Base              }
  1035.     MaxMSGS      : WORD;          { Maximum Messages in this Base            }
  1036.     AccessKey    : STRING[20];    { Access Key to this Base                  }
  1037.  
  1038.                                   { Following colors are in TEXTATTR form:   }
  1039.  
  1040.     TextColor    : BYTE;          { color of standard text                   }
  1041.     QuoteColor   : BYTE;          { color of quoted text                     }
  1042.     TagColor     : BYTE;          { color of taglines                        }
  1043.     OldTearColor : BYTE;          { color of old tear lines (___ or ~~~)     }
  1044.     TearColor    : BYTE;          { color of tear line                       }
  1045.     OriginColor  : BYTE;          { color of origin line                     }
  1046.     Address      : ARRAY[1..30] of
  1047.                         BOOLEAN;  { Address (1-30) out of NETWORK.DAT        }
  1048.                                   { Only one TRUE for ECHOMAIL bases         }
  1049.                                   { Only one TRUE for INTERNET EMAIL bases   }
  1050.                                   { Any number TRUE for NETMAIL Bases        }
  1051.     Origin       : BYTE;          { Origin Line (1-20) out of NETWORK.DAT    }
  1052.     RESERVED1    : BYTE;          { RESERVED - DO NOT MODIFY                 }
  1053.     MessageType  : BYTE;          { 1 = Squish                               }
  1054.                                   { 2 = JAM(mbp)(tm)                         }
  1055.                                   { 3 = .MSG                                 }
  1056.     DefTagType   : BYTE;          { 0 = Default Tagged                       }
  1057.                                   { 1 = Default Untagged                     }
  1058.                                   { 2 = Mandatory                            }
  1059.     NameUsage    : BYTE;          { 0 = Real Name                            }
  1060.                                   { 1 = Alias                                }
  1061.                                   { 2 = Ask                                  }
  1062.                                   { Included for FUTURE USE                  }
  1063.     InConfs      : SET of
  1064.                      JoinedConfs; { Conferences this Message Base is in      }
  1065.     Gateway:BYTE;                 { For INTERNET BASES : GATEWAY NUMBER from }
  1066.                                   { INTERNET.DAT.  Ignored on other bases.   }
  1067.     RESERVED2    : ARRAY[1..94] of
  1068.                         BYTE;     { RESERVED - DO NOT MODIFY                 }
  1069.     MBaseID      : LONGINT;       { permanent index #                        }
  1070. END;
  1071.  
  1072. {----------------------------------------------------------------------------}
  1073. { Filename: MCONF?.IDX, FCONF?.IDX (where ? is A-Z)                          }
  1074. { Location: DATA Directory                                                   }
  1075. { Format  : 1 <ConfIDX> record                                               }
  1076. {                                                                            }
  1077. { Notes   : Conference Index, which contains TRUE for each message base that }
  1078. {           is tagged as using this particular conference.  Example:  If you }
  1079. {           wish to know if Message Base #10 is in Conference B, you would   }
  1080. {           open MCONFB.IDX, and see if <ConfIDX>.Index[10] is TRUE.         }
  1081. {                                                                            }
  1082. {           An alternative is to open the file as a FILE of BOOLEAN, seek to }
  1083. {           the position that you are interested in, read in that boolean and}
  1084. {           check the status of it.                                          }
  1085. {----------------------------------------------------------------------------}
  1086.  
  1087. ConfIDX=
  1088. RECORD
  1089.      Index:ARRAY[0..32767] of BOOLEAN;  { Array containing Bases          }
  1090. END;
  1091.  
  1092.  
  1093. {----------------------------------------------------------------------------}
  1094. { Filename: FBASES.DAT                                                       }
  1095. { Location: DATA Directory                                                   }
  1096. { Format  : 1 <FileBaseREC> record for each corresponding File Base          }
  1097. {                                                                            }
  1098. { Notes   : File Base Date File, containing all information about each File  }
  1099. {           base.  Up to MaxFileBases of records.                            }
  1100. {----------------------------------------------------------------------------}
  1101.  
  1102. fbFlags=
  1103.    (fbNoratio,                    { if all files are FREE }
  1104.     fbUnhidden,                   { whether *VISIBLE* to users w/o access }
  1105.     fbDirDLpath,                  { if *.NFB file stored in DLPATH }
  1106.     fbTicBase,                    { if a Network (TIC) type base }
  1107.     fbUseGifSpecs,                { whether to use GifSpecs }
  1108.     fbNFMbase,                    { whether NFM uses this base }
  1109.     fbAllowOfflineRequest);       { Allow requesting of offline files? }
  1110.  
  1111. FileBaseREC=                          { FBASES.DAT : File base records }
  1112. RECORD
  1113.     Name      : STRING[70];          { Base Description                      }
  1114.     Filename  : STRING[8];           { Filename of filebase (no extension)   }
  1115.     RESERVED1 : ARRAY[1..4] of BYTE; { RESERVED - DO NOT MODIFY              }
  1116.     FilePATH  : STRING[79];          { path to this bases files              }
  1117.     RESERVED2 : ARRAY[1..2] of
  1118.                 BYTE;                { RESERVED - DO NOT MODIFY              }
  1119.     MaxFiles  : INTEGER;             { max files allowed                     }
  1120.     AccessKey : STRING[20];          { passWORD required                     }
  1121.     Archiver,                        { wanted archive type (1..max,0=inactive}
  1122.     Comment   : BYTE;                { wanted comment type (1..3,0=inactive) }
  1123.     fbFlag    : SET of fbflags;      { file base status vars                 }
  1124.     Access,                          { access requirements                   }
  1125.     ULAccess,                        { upload requirements                   }
  1126.     NameAccess: ACString;            { see-names requirements                }
  1127.     CDROM     : BOOLEAN;             { Is this base on a CD?                 }
  1128.     cdUploaded: BOOLEAN;             { Has this base been uploaded by NFM?   }
  1129.     cdNumber  : INTEGER;             { CD-ROM Disk Number associated with    }
  1130.     RESERVED3 : BYTE;                { RESERVED - DO NOT MODIFY              }
  1131.     DefTagType: BYTE;                { 0 = Default Tagged                    }
  1132.                                      { 1 = Default Untagged                  }
  1133.                                      { 2 = Mandatory                         }
  1134.     InConfs   : SET of JoinedConfs;  { Conferences this File Base is in      }
  1135.     FBaseID:LONGINT;                 { Permanent ID - DO NOT MODIFY          }
  1136.     RESERVED4 : ARRAY[1..91] of BYTE;     { RESERVED - DO NOT MODIFY         }
  1137. END;
  1138.  
  1139. {----------------------------------------------------------------------------}
  1140. { Filename: LASTON.DAT                                                       }
  1141. { Location: DATA Directory                                                   }
  1142. { Format  : 1 <LastonREC> record for each call to the BBS                    }
  1143. {           There will be 10 records at all times (records 0-9)              }
  1144. {                                                                            }
  1145. { Notes   : The 0 record is the newest entry, down to the last record.       }
  1146. {----------------------------------------------------------------------------}
  1147.  
  1148. LastonREC=
  1149. RECORD
  1150.     Name        : STRING[36];     { Name of user (Real or Alias based on     }
  1151.                                   { system settings                          }
  1152.     RESERVED    : INTEGER;        { RESERVED                                 }
  1153.     CallingFrom : STRING[30];     { Caller's Calling From string             }
  1154.     UserBaud    : STRING[6];      { Baud rate connected at                   }
  1155.     Node        : INTEGER;        { Node connected on                        }
  1156.     DateOn      : STRING[8];      { Date connected                           }
  1157.     TimeOn      : STRING[8];      { Time connected                           }
  1158. END;
  1159.  
  1160. {----------------------------------------------------------------------------}
  1161. { Filename: DOORS.DAT, EDITORS.DAT                                           }
  1162. { Location: DATA Directory                                                   }
  1163. { Format  : 1 <DoorREC> record for each door/editor                          }
  1164. {           EDITORS.DAT has 0 holding record                                 }
  1165. {           DOORS.DAT 0 record is information for External Chat              }
  1166. {                                                                            }
  1167. {----------------------------------------------------------------------------}
  1168.  
  1169. DoorTrackREC=
  1170. RECORD
  1171.  
  1172.         TimesUsed:LONGINT;
  1173.         MinutesUsed:LONGINT;
  1174.         DTRESERVED:ARRAY[1..100] of BYTE;
  1175. END;
  1176.  
  1177. DoorREC=
  1178. RECORD          
  1179.  
  1180.     DOORFilename: STRING[79];     { Path/Filename to Door or Batch File      }
  1181.     DOORName    : STRING[40];     { Name for Display of Door                 }
  1182.     DOORDropType: BYTE;           { Drop File Type:                          }
  1183.                                   {     1 - DOOR.SYS                         }
  1184.                                   {     2 - DOORFILE.SR                      }
  1185.                                   {     3 - CHAIN.TXT                        }
  1186.                                   {     4 - DORINFO1.DEF                     }
  1187.                                   {     5 - SFDOORS.DAT                      }
  1188.                                   {     6 - CALLINFO.BBS                     }
  1189.                                   {     7 - No drop file                     }
  1190.     DOORDropPath: STRING[79];     { Path to the location to place the Drop   }
  1191.                                   { File                                     }
  1192.     RIPenabled  : BOOLEAN;        { RIPscrip graphics enabled for this door  }
  1193.     Realname    : BOOLEAN;        { Use Realnames                            }
  1194.     MaxMinutes  : REAL;           { Maximum minutes allowed (time left is    }
  1195.                                   { max if less than this value, 0 means     }
  1196.                                   { disabled, use time left always           }
  1197.     LocalOnly   : BOOLEAN;        { For EDITORS only (ignored in Doors)      }
  1198.     ShowLoadStr : BOOLEAN;        { Whether the "Loading..." string should be}
  1199.                                   { shown before running this door           }
  1200.  
  1201.     DRESERVED1  : ARRAY[1..94] of BYTE;  { RESERVED - DO NOT MODIFY          }
  1202.     DoorID      : LONGINT;        { Permanent DoorID number (DO NOT MODIFY)  }
  1203.     TRACKToday  : DoorTrackREC;   { Door Tracking for Today - used for       }
  1204.                                   { running total and then moved to yesterday}
  1205.                                   { at nightly maintenance                   }
  1206.     TRACKYest   : DoorTrackREC;   { Door Tracking for Yesterday              }
  1207.     TRACKForever: DoorTrackREC;   { Door Tracking for Forever                }
  1208.  
  1209.     DRESERVED2  : ARRAY[1..300] of BYTE; { RESERVED - DO NOT MODIFY          }
  1210. END;
  1211.  
  1212. {----------------------------------------------------------------------------}
  1213. { Filename: PROTOCOL.DAT                                                     }
  1214. { Location: DATA Directory                                                   }
  1215. { Format  : 1 <ProtocolREC> record for each protocol                         }
  1216. {                                                                            }
  1217. { Notes   : There is no holding record in this file.                         }
  1218. {----------------------------------------------------------------------------}
  1219.  
  1220. protFlags=
  1221.    (protActive,
  1222.     protBatch,
  1223.     protResume,
  1224.     protUseOpus,
  1225.     protNameSingle);
  1226.  
  1227. ProtocolREC=
  1228. RECORD
  1229.     Name     : STRING[40];              { Description of Protocol            }
  1230.     KeyChar  : CHAR;                    { Character used to select protocol  }
  1231.     pFlags   : SET of protFlags;        { Protocol flags                     }
  1232.     Access   : ACString;                { Access Control String              }
  1233.     ulCommand: STRING[79];              { UL Batch File Name                 }
  1234.     dlCommand: STRING[79];              { DL Batch File Name                 }
  1235.     TempLog  : STRING[25];              { Temporary log file                 }
  1236.     ulLog,
  1237.     dlLog    : STRING[25];              { Permanent log files                }
  1238.     EnvCMD   : STRING[60];              { Environment command before transfer}
  1239.     dlFList  : STRING[25];              { DL File list filename              }
  1240.     ulCode   : INTEGER;                 { UL errorcode OK                    }
  1241.     dlCode   : INTEGER;                 { DL errorcode OK                    }
  1242.     MaxChars : INTEGER;                 { Maximum characters in cmdline      }
  1243.     LogPf,
  1244.     LogPs    : INTEGER;                 { Position in log file for data      }
  1245.     RESERVED : ARRAY[1..30] of BYTE;    { RESERVED                           }
  1246. END;
  1247.  
  1248. cdrec=                                  { CDS.DAT }
  1249. RECORD
  1250.     name:STRING[36];                    { Name of CD for Internal Use }
  1251.     volumeid:STRING[12];                { Volume ID of CD }
  1252.     uniquefile:STRING[40];              { Unique filename to use instead }
  1253.     useunique:boolean;                  { Use Unique Filename instead of
  1254.                                                 VolumeID}
  1255.     viewACS:acstring;
  1256.     RESERVED:ARRAY[1..40] of BYTE;      { RESERVED }
  1257. END;
  1258.  
  1259. {----------------------------------------------------------------------------}
  1260. { Filename: CDS.IDX                                                          }
  1261. { Location: DATA Directory                                                   }
  1262. { Format  : 1 <CDromIDX> record                                              }
  1263. {                                                                            }
  1264. { Notes   : There is no holding record in this file.                         }
  1265. {           Each element in the array represents a drive letter.  As a double}
  1266. {           security measure, the drive letter (capitalized) is placed in the}
  1267. {           appropriate spot for the letter, which is ord(letter)-64.        }
  1268. {           Therefore, A would be placed in 1, B in 2, etc.                  }
  1269. {----------------------------------------------------------------------------}
  1270.  
  1271. CDromIDX=
  1272. RECORD
  1273.     Drives:ARRAY[1..26] of CHAR;     { Drives currently available for CDs    }
  1274. END;
  1275.  
  1276. {----------------------------------------------------------------------------}
  1277. { Filename: CONFS.DAT                                                        }
  1278. { Location: DATA Directory                                                   }
  1279. { Format  : 1 <ConfsREC> record                                              }
  1280. {                                                                            }
  1281. { Notes   : There is no holding record in this file.                         }
  1282. {           Each conference is represented by a letter A-Z (1-26).  To access}
  1283. {           information for Message Conference A, you would use:             }
  1284. {           <ConfsRec>.MSGconf[1].<field>                                    }
  1285. {----------------------------------------------------------------------------}
  1286.  
  1287. ConferenceREC=
  1288. RECORD
  1289.         name   : STRING[40];    { Name of this conference                    }
  1290.         access : ACString;      { Access String for this conference          }
  1291.         active : BOOLEAN;       { Is this conference active?                 }
  1292.         hidden : BOOLEAN;       { Is this conference hidden?                 }
  1293. END;
  1294.  
  1295. ConfsREC=
  1296. RECORD
  1297.         MSGconf  : ARRAY[1..26] of ConferenceREC;  { Message Conferences     }
  1298.         FILEconf : ARRAY[1..26] of ConferenceREC;  { File Conferences        }
  1299. END;
  1300.  
  1301. {----------------------------------------------------------------------------}
  1302. { Filename: REQUESTS.DAT                                                     }
  1303. { Location: FILE Directory                                                   }
  1304. { Format  : 1 <RequestREC> record for each request                           }
  1305. {                                                                            }
  1306. { Notes   : There is no holding record in this file.                         }
  1307. {           A new record is added to the file each time a file is requested. }
  1308. {----------------------------------------------------------------------------}
  1309.  
  1310. RequestREC=
  1311. RECORD
  1312.     FileAvail  : BOOLEAN;          { whether file has been made available in }
  1313.                                    { the Systat.FileReqPath Path             }
  1314.     ReqDenied  : BOOLEAN;          { If Sysop has denied File Request        }
  1315.     Filename   : STRING[12];       { Filename of File Requested              }
  1316.     FileBase   : INTEGER;          { Base Number File is In                  }
  1317.     UserReal   : STRING[36];       { User's Real Name that Requested File    }
  1318.     RESERVED   : ARRAY[1..100] of
  1319.                         BYTE;      { RESERVED                                }                          
  1320. end;
  1321.  
  1322. {----------------------------------------------------------------------------}
  1323. { Filename: FLAGxxxx.DAT (xxxx is node number)                               }
  1324. { Location: TEMP Directory                                                   }
  1325. { Format  : 1 <FlaggedREC> record for each flagged file                      }
  1326. {                                                                            }
  1327. { Notes   : There is no holding record in this file.                         }
  1328. {           A new record is added to the file each time a file is flagged.   }
  1329. {----------------------------------------------------------------------------}
  1330.  
  1331. FlaggedREC=
  1332. RECORD
  1333.     Filename   : STRING[65];       { Filename of file flagged, full path     }
  1334.     Description:array[1..10] of  
  1335.                   STRING[45];      { First 10 lines of description           }
  1336.     Filebase   : INTEGER;          { Filebase this file is located in, -1 for}
  1337.                                    { unlisted.                               }
  1338.     Filepoints : INTEGER;          { Filepoints for this file.               }
  1339.     KB         : LONGINT;          { Number of KB for this file              }
  1340.     TransTime  : REAL;             { Estimated Transfer time                 }
  1341.     isCDromFile: BOOLEAN;          { Is this file on CD-ROM?                 }
  1342. END;
  1343.  
  1344. {----------------------------------------------------------------------------}
  1345. { Filename: MENUS.DAT                                                        }
  1346. { Location: DATA Directory                                                   }
  1347. { Format  : 1 <MenuREC> record for each menu                                 }
  1348. {                                                                            }
  1349. { Notes   : There is no holding record in this file.                         }
  1350. {           Although menus are numbered 1+, the actual location of the record}
  1351. {           is Menu Number - 1.                                              }
  1352. {----------------------------------------------------------------------------}
  1353.  
  1354.  
  1355. mnuFlags=
  1356.    (mnuClrscreen,                 { Clear screen before menu display         }
  1357.     mnuNoCenter,                  { Don't center the menu titles!            }
  1358.     mnuNoPrompt,                  { No menu prompt whatsoever?               }
  1359.     mnuForcePause,                { Force a pause before menu display?       }
  1360.     mnuAutoTime,                  { Is time displayed automatically?         }
  1361.     mnuFileChange,                { Allow Filebase QuickChange?              }
  1362.     mnuMsgChange,                 { Allow Messagebase QuickChange?           }
  1363.     mnuNoGlobal);                 { Do not use Global Commands in this menu  }
  1364.  
  1365. MenuREC=
  1366. RECORD
  1367.     Name      : STRING[60];       { Menu Name                                }
  1368.     Filename  : STRING[8];        { Menu Filename (*.MNU)                    }
  1369.     Header    : STRING[12];       { Menu Header Filename                     }
  1370.     Footer    : STRING[12];       { Menu Footer Filename                     }
  1371.     Display   : STRING[12];       { Menu Display File (blank=GENERIC)        }
  1372.     HelpScreen: STRING[12];       { Menu Help File (blank=GENERIC)           }
  1373.     Fallback  : WORD;             { Fallback Menu #                          }
  1374.     Title     : ARRAY[1..3] of
  1375.                   STRING[100];    { GENERIC Menu Header                      }
  1376.     Prompt    : STRING[120];      { Menu Prompt                              }
  1377.     Access    : ACString;         { Access Control String                    }
  1378.     Accesskey : STRING[15];       { Access Key for Access to Menu            }
  1379.     Helplevel : BYTE;             { Force Help Level to                      }
  1380.     Columns   : BYTE;             { GENERIC Number of Columns                }
  1381.     Colors    : ARRAY[1..3] of
  1382.                         BYTE;     { GENERIC Colors                           }
  1383.     menuFlags : SET of mnuFlags;  { Menu Flags                               }
  1384. END;
  1385.  
  1386. {----------------------------------------------------------------------------}
  1387. { Filename: *.MNU                                                            }
  1388. { Location: MENU Directory                                                   }
  1389. { Format  : 1 <MenuCommandREC> record for each menu command                  }
  1390. {                                                                            }
  1391. { Notes   : There is no holding record in this file.                         }
  1392. {----------------------------------------------------------------------------}
  1393.  
  1394. cmdFlags=
  1395.    (cmdHidden,                    { Command is ALWAYS hidden                 }
  1396.     cmdUnhidden,                  { Command is ALWAYS visible                }
  1397.     cmdAutoexec,                  { Auto exececute command upon menu startup }
  1398.     cmdTitleline);                { Command is a Title Display line          }
  1399.  
  1400. MenuCommandREC=
  1401. RECORD
  1402.     LongDesc : STRING[70];        { Long Description                         }
  1403.     ShortDesc: STRING[35];        { Short Description                        }
  1404.     ExecKeys : STRING[14];        { Command Execution Keys                   }
  1405.     Access   : ACString;          { Access String                            }
  1406.     RESERVED : BYTE;              { RESERVED                                 }
  1407.     Command  : ARRAY[1..2] of
  1408.                         CHAR;     { Command Type                             }
  1409.     CommData : STRING[80];        { Additional Command Data                  }
  1410.     cFlags   : SET of cmdFlags;   { Command Flags                            }
  1411. END;
  1412.  
  1413. {----------------------------------------------------------------------------}
  1414. { Filename: *.NXL                                                            }
  1415. { Location: DATA Directory                                                   }
  1416. { Format  : 1 <StringIDX> record at the beginning of file                    }
  1417. {           RAW String Data following Index                                  }
  1418. {                                                                            }
  1419. { Notes   : This file type is a RAW data file with an index placed at the    }
  1420. {           beginning of the file.  The index is an index placeholder for    }
  1421. {           each of the configurable strings.  The index entry may be filled }
  1422. {           with either the byte offset in the file of the beginning of the  }
  1423. {           string, or -1 if the string is blank.  The strings are stored    }
  1424. {           beginning with the first byte in the file after the index.  They }
  1425. {           are stored in Turbo Pascal format ([length byte][data]).  The    }
  1426. {           best way to find a string is to blockread the contents of the    }
  1427. {           index into a variable of type <StringIDX>.  Then when you wish to}
  1428. {           retrieve a string, seek to the byte position identified for that }
  1429. {           string number in the index (returning a blank string for those   }
  1430. {           which contain -1), and blockread one byte into the [0] byte of   }
  1431. {           the string.  Once you have obtained this, you can blockread the  }
  1432. {           rest of the string.                                              }
  1433. {                                                                            }
  1434. {----------------------------------------------------------------------------}
  1435. { EXAMPLE:                                                                   }
  1436. {           NOTE: StrIdx is a pointer to a StringIDX record, which has been  }
  1437. { allocated and the data read in before calling this function.  Rememeber to }
  1438. { take into account the path information from the MATRIX.DAT when opening the}
  1439. { files shown in this example.  This has not been done in the example.       }
  1440. {----------------------------------------------------------------------------}
  1441. { This function will return the string located in string # 'x'               }
  1442. {                                                                            }
  1443. { FUNCTION GetString (x:INTEGER):STRING;                                     }
  1444. { VAR f:FILE;                                                                }
  1445. {     s:STRING;                                                              }
  1446. {     numread:WORD;                                                          }
  1447. { BEGIN                                                                      }
  1448. { if (stridx^.offset[x]<>-1) then begin                                      }
  1449. { assign(f,'ENGLISH.NXL');                                                   }
  1450. (*{$I-} reset(f,1); {$I+}                                                   *)
  1451. { if (ioresult<>0) then begin                                                }
  1452. {       writeln('Error reading ENGLISH.NXL');                                }
  1453. {       GetString:='';                                                       }
  1454. {       exit;                                                                }
  1455. { end;                                                                       }
  1456. (*{$I-} seek(f,stridx^.offset[x]); {$I+}                                    *)
  1457. { if (ioresult<>0) then begin                                                }
  1458. {       writeln('Error reading ENGLISH.NXL');                                }
  1459. {       GetString:='';                                                       }
  1460. {       close(f);                                                            }
  1461. {       exit;                                                                }
  1462. { end;                                                                       }
  1463. { blockread(f,s[0],1,numread);                                               }
  1464. { if (numread<>1) then begin                                                 }
  1465. {       writeln('Error reading ENGLISH.NXL');                                }
  1466. {       GetString:='';                                                       }
  1467. {       close(f);                                                            }
  1468. {       exit;                                                                }
  1469. { end;                                                                       }
  1470. { blockread(f,s[1],ord(s[0]),numread);                                       }
  1471. { if (numread<>ord(s[0])) then begin                                         }
  1472. {       writeln('Error reading ENGLISH.NXL');                                }
  1473. {       gstring:='';                                                         }
  1474. {       close(f);                                                            }
  1475. {       exit;                                                                }
  1476. { end;                                                                       }
  1477. { close(f);                                                                  }
  1478. { end else s:='';                                                            }
  1479. { GetString:=s;                                                              }
  1480. { end;                                                                       }
  1481. {----------------------------------------------------------------------------}
  1482.  
  1483. StringIDX=
  1484. RECORD
  1485.     Offset:ARRAY[1..2000] of LONGINT;
  1486. END;
  1487.  
  1488. { End file NEXUS.INC }
  1489.